ci: native arm64 runners (untested, isolated from action-plan branch) - #19
Draft
dubpixel wants to merge 2 commits into
Draft
ci: native arm64 runners (untested, isolated from action-plan branch)#19dubpixel wants to merge 2 commits into
dubpixel wants to merge 2 commits into
Conversation
Both image builds ran on ubuntu-latest (x86_64) and emulated the whole chroot provisioning stage via qemu-aarch64-static -- every apt-get/dpkg call inside the mounted arm64 image ran through QEMU user-mode translation, which is commonly 5-10x slower than native for that kind of CPU-bound work. Packer's arm-image plugin already supports skipping this: it only adds the QEMU/binfmt steps when `!ImageArch.IsNative()` (pkg/builder/builder.go). Set image_arch = "arm64" in the shared dpx-buttonode.pkr.hcl and switched both builder workflows to ubuntu-24.04-arm (free, GitHub-hosted, native arm64) -- with host arch matching image_arch, the plugin skips QEMU entirely on its own, no custom logic needed. Removed the now-unnecessary qemu-user-static install steps. Verified before touching CI: Packer itself installs via HashiCorp's own apt repo (multi-arch, resolves correctly on arm64), and packer-plugin-arm-image v0.2.7 publishes a linux_arm64 build. Isolated on its own branch off main, not mixed into the action-plan hardware-fix branch -- this is unverified until a real CI run confirms it, and a broken build here shouldn't be confused with a regression in the already-tested fixes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Removing it broke the build outright: packer-plugin-arm-image's Prepare() unconditionally resolves a qemu_binary path via exec.LookPath, regardless of whether the emulation is actually needed later -- only its separate Run()-time IsNative() check decides that. Without the binary present, Prepare() falls back to an "embedded qemu" feature that's amd64-only and fails outright on arm64: embedded qemu is not available - currently, embedded qemu is only available for linux amd64. please download qemu-user-static manually Confirmed via a live test build (33982012810) that failed exactly this way. Re-added the install -- it's a fast package install, not the slow part we're trying to avoid, and the plugin's own IsNative() check still skips actually invoking it during the chroot provisioning. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Switches both image builders (
armbian-builder.yaml,raspios-builder.yaml) fromubuntu-latest(x86_64, QEMU-emulated chroot) toubuntu-24.04-arm(native arm64, free for public repos). Packer'sarm-imageplugin already skips its QEMU/binfmt steps whenimage_archmatches the host's runtime arch -- addedimage_arch = "arm64"todpx-buttonode.pkr.hclto trigger that, and removed the now-deadqemu-user-staticinstall steps.Deliberately kept off
fix/action-plan-batch-- this is a separate, unverified change, and if it breaks the build it shouldn't be confused with a regression in the hardware fixes already tested there.Test plan
ubuntu-24.04-arm(about to run one)🤖 Generated with Claude Code